# -*- coding: utf-8 -*-
__author__ = 'nibo'


from HttpUtile import *
import logging as log
import socket
import time


#第1步，从大纲记录中取得topic记录，此时容易超时退出
def doStep1():
    try:
        login()
        listGrop,groupDic = createAllGroup()
        for group_id in listGrop:
            #得到头信息
            post_group_data = postGroupData(group_id)
            #得到每个大队链接 4大队编码有问题,有非法字符，使用ignore处理
            get_result_group = reqGroupStuList(report_url, post_group_data)
            group_name = groupDic[str(group_id)]
            #得到每个人的大纲信息
            reqMpListUpdate(get_result_group,group_id,group_name)
    #一般出这个错是因为已经超时了，取不到值
    except :
        log.error( 'error-group:%s'% group_id)
    finally:
        logout()

#第2步，从大纲记录中取得topic记录，此时容易超时退出
def doStep2():
    try:
        login()
        all_mp_id = getAllMpId()
        for mp in all_mp_id:
            reqTpList(mp['id'], mp['mp_url'])
    #一般出这个错是因为已经超时了，取不到值
    except ValueError, e:
        log.error( 'ValueError:', e)
        doStep2()
    finally:
        logout()

#第3步，更新topic记录中的时间和文件路径，此时容易超时退出
def doStep3():
    try:
        login()
        all_tp_id = getAllTpId()
        for tp in all_tp_id:
            reqTpDate(tp['ID'],tp['TOPIC_URL'],tp['TOPIC_NAME'],tp['GROUP_ID'],tp['ID_CARD'])

    # 一般出这个错是因为已经超时了，所以取不到值；无需退出
    except ValueError, e:
        log.error( 'ValueError:', e)
        doStep3()
    #socket.error: [Errno 104] Connection reset by peer
    #[Errno 104] Connection reset by peer 请求太过频繁
    except socket.error,e:
        time.sleep(20)
        log.error( 'TypeError:', e)
        logout()
        doStep3()
    except :
        log.error( 'otherError:')
        logout()
        doStep3()
    finally:
        logout()

log.info('startTime: %s '% getCurrentTime())
logout()
reqTruncate()
doStep1()
# doStep2()
# doStep3()

log.info('endTime: %s '% getCurrentTime())

